package com.hfi.compositereuse.composite;

/**
 * 可以看到组合优于继承的两点：
 * 1. 组合不破坏Worker Account Sales的封装性
 * 2. 支持扩展 扩展Employee类 比如增加组合类 不会对Worker Account Sales造成影响
 * 如增加一个IManageRole 管理序列 说明Employee有一个管理序列的Role 还有一个业务序列的Role 就很灵活
 * @author ChangLiang
 * @date 2019/12/2
 */
public class Employee {

    /**
     * Employee has a role
     */
    private IRole iRole;

    public IRole getiRole() {
        return iRole;
    }

    public void setiRole(IRole iRole) {
        this.iRole = iRole;
    }

    public Employee(IRole iRole) {
        this.iRole = iRole;
    }

    public void sayEmployee() {
        iRole.sayEmployee();
    }

    /**
     * 组合模式下新增了这个方法
     * 对于其他的类没有任何影响 只属于Employee这个类 降低了类与类之间的耦合度
     */
    public void redundantMethod(){
        System.out.println("redundant method");
    }
}
